//go语言函数
package main

import (
	"fmt"
)

//函数定义: func func_name(paramlist) returns list
/*
	支持0或多个参数，支持0或多个返回值
	参数类型后置: name Type
*/

func add(a int, b int) int {
	return a + b
}

func mul(a int, b int) int {
	return a * b
}

//func(a int, b int) int 是函数原型
func docal(a, b int, f func(x int, y int) int) int {
	return f(a, b)
}

func main() {
	x, y := 10, 20
	fmt.Println(add(x, y), mul(x, y))
	f := add //这是什么？ f又是什么？ 答：f是一个变量，f是函数指针变量
	fmt.Println(f(x, y))
	f = mul
	fmt.Println(f(x, y))
	fmt.Println(docal(11, 22, mul))
	f1 := func(x, y int) int {
		return x - y
	}

	fmt.Println(f1(20, 10))
}
